package com.icon.infra.modelo.persistencia.dao;

import java.util.List;

import org.springframework.orm.hibernate3.HibernateTemplate;

/**
 * @author Rayfran Rocha
 * 
 * @param <T>
 */
public interface IDataAccessViewObject<T> {

	T recuperarObjetoPorHQL(String stringHQL, String[] params, Object[] valores)
			throws Exception;

	List<T> recuperarObjetos(boolean... isLancarExcecaoObjetoNaoEncontrado)
			throws Exception;

	List<T> recuperarObjetosOrdenadosPor(String[] camposOrdenacao,
			boolean... isLancarExcecaoObjetoNaoEncontrado) throws Exception;

	List<T> recuperarObjetosExceto(List<T> objetosAExcluir,
			boolean... isLancarExcecaoObjetoNaoEncontrado) throws Exception;

	List<T> recuperarObjetosPorSQL(String stringSQL, String[] params,
			Object[] valores, boolean... isLancarExcecaoObjetoNaoEncontrado)
			throws Exception;

	List<T> recuperarObjetosPorHQL(String stringHQL, String[] params,
			Object[] valores, boolean... isLancarExcecaoObjetoNaoEncontrado)
			throws Exception;

	List<T> recuperarObjetosExcetoOrdenadosPor(List<T> objetosAExcluir,
			String[] camposOrdenacao, boolean isLancarExcecaoObjetoNaoEncontrado)
			throws Exception;

	HibernateTemplate getHibernateTemplate();

	List recuperarDTOPorHQL(String stringHQL, String[] params,
			Object[] valores, boolean[] isLancarExcecaoObjetoNaoEncontrado)
			throws Exception;
}
